package com.hifar.test.syncData.service;

import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.IService;
import com.hifar.test.syncData.pojo.HfEnvSyncTableConfig;
import com.hifar.test.syncData.pojo.VO.HfEnvSyncTableConfigAddVO;
import com.hifar.test.syncData.pojo.VO.TableFieldVO;


import java.util.Date;
import java.util.List;

/**
 * @author zhuWeiWei
 * @description: TODO
 * @date 2025/4/11 11:56
 */
public interface IHfEnvSyncTableConfigService extends IService<HfEnvSyncTableConfig> {
    /**
     * 批量新增数据同步配置
     *
     * @param tableConfigAddVOList
     */
    void batchAdd(List<HfEnvSyncTableConfigAddVO> tableConfigAddVOList);

    /**
     * 判断表是否已配置
     *
     * @param tableName 表名称
     */
    boolean tableIsExist(String tableName);

    /**
     * 查询所有需要同步的表
     *
     * @return
     */
    List<HfEnvSyncTableConfig> listSyncTable();

    /**
     * 更新同步时间
     *
     * @param id
     * @param lastTime
     */
    void updateLastTime(String id, Date lastTime);

    /**
     * 查询系统所有表
     *
     * @param page         分页
     * @param queryWrapper 查询条件
     * @return
     */
    Page<HfEnvSyncTableConfig> listPageAllTable(Page<HfEnvSyncTableConfig> page, QueryWrapper<HfEnvSyncTableConfig> queryWrapper);

    /**
     * 查询表中字段
     *
     * @param tableName 表名称
     * @return
     */
    List<TableFieldVO> listTableField(String tableName);

    /**
     * 批量更新最后同步时间
     *
     * @param idList       ID列表
     * @param lastSyncTime 最后同步时间
     */
    void batchUpdateSyncTime(List<String> idList, Date lastSyncTime);
}
